// 获取系统状态栏的高度
let systemInfo = uni.getSystemInfoSync()
let menuButtonInfo = {}

// 如果是小程序，获取右上角胶囊的尺寸信息
// #ifdef MP-WEIXIN
try {
  menuButtonInfo = uni.getMenuButtonBoundingClientRect()
} catch (e) {
  console.log('获取胶囊信息失败', e)
}
// #endif

/**
 * 新版导航栏 mixin
 * 提供导航栏高度计算和胶囊按钮对齐功能
 */
export default {
  data() {
    return {
      // 系统状态栏高度
      statusBarHeight: systemInfo.statusBarHeight || 0,
      // 导航栏高度
      navBarHeight: 44,
      // 右边距（用于标题居中）
      marginRight: '0rpx'
    }
  },
  
  mounted() {
    this.setNavBarHeight()
    this.calculateMarginRight()
  },
  
  methods: {
    /**
     * 设置导航栏高度，确保与胶囊按钮对齐
     */
    setNavBarHeight() {
      // #ifdef MP-WEIXIN
      if (menuButtonInfo.height) {
        // 胶囊按钮高度 + 胶囊按钮距离顶部的距离 - 状态栏高度
        this.navBarHeight = menuButtonInfo.height + (menuButtonInfo.top - this.statusBarHeight) * 2
      }
      // #endif
      
      // #ifndef MP-WEIXIN
      this.navBarHeight = 44
      // #endif
    },

    /**
     * 计算标题右边距，确保居中显示
     */
    calculateMarginRight() {
      // #ifdef MP-WEIXIN
      if (menuButtonInfo.width) {
        // 胶囊按钮宽度 + 胶囊按钮右边距 = 需要预留的右边距
        const windowWidth = systemInfo.windowWidth || 375
        const menuButtonRight = windowWidth - menuButtonInfo.left
        this.marginRight = menuButtonRight + 'px'
      }
      // #endif
      
      // #ifndef MP-WEIXIN
      this.marginRight = '0rpx'
      // #endif
    }
  }
} 